package org.vs.test.contract;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 1.5.0.
 */
@SuppressWarnings("rawtypes")
public class __Test01_sol_Test01 extends Contract {
    public static final String BINARY = "608060405234801561001057600080fd5b50610105806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80631ab06ee51460375780639507d39a146048575b600080fd5b6046604236600460a6565b606b565b005b60576053366004608f565b607d565b6040516062919060c6565b60405180910390f35b60009182526020829052604090912055565b60009081526020819052604090205490565b600060208284031215609f578081fd5b5035919050565b6000806040838503121560b7578081fd5b50508035926020909101359150565b9081526020019056fea26469706673582212203a2d4213608866c66b56e0281d5b43e0caf53264ecf79fa1c4537a6c7e54e5e664736f6c63430008000033";

    public static final String FUNC_GET = "get";

    public static final String FUNC_SET = "set";

    @Deprecated
    protected __Test01_sol_Test01(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected __Test01_sol_Test01(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected __Test01_sol_Test01(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected __Test01_sol_Test01(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public RemoteFunctionCall<BigInteger> get(BigInteger key) {
        final Function function = new Function(FUNC_GET, 
                Arrays.<Type>asList(new Uint256(key)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> set(BigInteger key, BigInteger value) {
        final Function function = new Function(
                FUNC_SET, 
                Arrays.<Type>asList(new Uint256(key),
                new Uint256(value)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    @Deprecated
    public static __Test01_sol_Test01 load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new __Test01_sol_Test01(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static __Test01_sol_Test01 load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new __Test01_sol_Test01(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static __Test01_sol_Test01 load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new __Test01_sol_Test01(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static __Test01_sol_Test01 load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new __Test01_sol_Test01(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<__Test01_sol_Test01> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(__Test01_sol_Test01.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<__Test01_sol_Test01> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(__Test01_sol_Test01.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<__Test01_sol_Test01> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(__Test01_sol_Test01.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<__Test01_sol_Test01> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(__Test01_sol_Test01.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }
}
